/*****************************************************************//**
 * \file   AnsysDef.h
 * \brief  AnsysDef
 *
 * \author Wyatt
 * \date   May 2023
 *********************************************************************/
#pragma once

#include <string.h>
#include <memory>
#include <unordered_set>

struct EnumClassHash
{
	template <typename T>
	std::size_t operator()(T t) const
	{
		return static_cast<std::size_t>(t);
	}
};

enum ANSYS_KEYWORD
{
	KEY_UNKNOWN = 0,
	KEY_ACEL,
	KEY_ALLSEL,
	KEY_ALPHD,
	KEY_ANTYPE,

	KEY_BETAD,
	KEY_BF,
	//新增关键字-20240506
	KEY_BUCOPT,
	
	KEY_CE,
	KEY_CERIG,
	KEY_CM,
	KEY_CMBLOCK,
	KEY_CMSEL,
	KEY_CSCIR,
	
	KEY_D,
	KEY_DELTIM,
	KEY_DIM,
	KEY_DMPRAT,
	KEY_DMPSTR,
	KEY_DOMEGA,
	
	KEY_EALIVE,
	KEY_EBLOCK,
	KEY_EKILL,
	KEY_EN,
	KEY_ESEL,
	KEY_ET,
	KEY_ETBLOCK,
	
	KEY_F,
	KEY_FC,
	
	KEY_GET,
	
	KEY_IC,
	KEY_IRLF,
	//新增关键字
	KEY_INISTATE,
		
	KEY_KEYO,
	KEY_KEYOPT,

	KEY_LOCAL,
	
	KEY_MAT,
	KEY_MP,
	KEY_MPTEMP,
	KEY_MPDATA,
	KEY_MULSET,
	//新增关键字-20240509
	KEY_MODOPT,
	
	KEY_NBLOCK,
	KEY_NEQIT,
	KEY_NLGEOM,
	KEY_NMOD,
	KEY_NSEL,
	KEY_NSLE,
	KEY_NSUB,
	
	KEY_OMEGA,
	
	KEY_PREAD,
	//新增关键字-20240506
	KEY_PERTURB,
		
	KEY_RBE3,
	KEY_REAL,
	KEY_RLBLOCK,
	
	KEY_SECTYPE,
	KEY_SECDATA,
	KEY_SECOFFSET,
	//新增关键字
	KEY_SECOFF,
	KEY_SECCONTROL,
	KEY_SET,
	KEY_SF,
	KEY_SFE,	
	KEY_SOLVE,
		
	KEY_TB,
	KEY_TBFIELD,
	KEY_TBDATA,
	KEY_TBTEMP,
	KEY_TBPT,
	KEY_TBIN,
	KEY_TIME,
	KEY_TREF,
	KEY_TSHAPE,
	KEY_TUNIF,
	KEY_TYPE,
	
	KEY_CNT
};

static std::unordered_set<int> _2DAnalysisElement = {
	13,25,35,55,75,77,78,83,121,153,182,183,222,223,230,233,238,292,293
};

static bool If3DAnalysisElement(int& target)
{
	if (_2DAnalysisElement.find(target) != _2DAnalysisElement.end())
	{
		return false;
	}
	else
	{
		return true;
	}
};